#!/bin/bash

# 钉钉卡片发送器 - 启动脚本
# 此脚本用于启动 FastAPI 网页应用

set -e  # 如果任何命令返回非零状态则立即退出

# 输出颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # 无颜色

echo -e "${GREEN}正在启动钉钉卡片发送器...${NC}"

# 检查是否安装了 Python
if ! command -v python3 &> /dev/null; then
    echo -e "${RED}错误: 未安装 Python3${NC}" >&2
    exit 1
fi

# 检查 settings.json 文件是否存在
if [ ! -f "settings.json" ]; then
    echo -e "${RED}错误: 未找到 settings.json 文件${NC}" >&2
    echo "请创建一个 settings.json 文件并配置钉钉 Webhook 信息"
    echo "示例:"
    echo '{'
    echo '  "dingtalk_webhook_url": "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN",'
    echo '  "dingtalk_secret": "YOUR_SECRET"'
    echo '}'
    exit 1
fi

# 检查是否有所需的依赖文件
if [ ! -f "requirements.txt" ]; then
    echo -e "${RED}错误: 未找到 requirements.txt 文件${NC}" >&2
    exit 1
fi

# 如果尚未安装依赖项，则安装
echo -e "${YELLOW}正在安装依赖项...${NC}"
pip3 install -r requirements.txt || {
    echo -e "${RED}错误: 安装依赖项失败${NC}" >&2
    exit 1
}

# 检查 settings.json 是否包含有效内容
WEBHOOK_URL=$(python3 -c "import json; print(json.load(open('settings.json')).get('dingtalk_webhook_url', ''))" 2>/dev/null || echo "")
if [ -z "$WEBHOOK_URL" ] || [ "$WEBHOOK_URL" = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN" ]; then
    echo -e "${YELLOW}警告: settings.json 中的 Webhook URL 尚未配置${NC}"
    echo "请在 settings.json 中填入实际的钉钉 Webhook URL 和密钥"
fi

# 启动 FastAPI 应用
echo -e "${GREEN}正在启动 FastAPI 服务器...${NC}"
echo "应用将在 http://localhost:8000 上运行"
echo "按 Ctrl+C 停止服务器"

uvicorn main:app --host 0.0.0.0 --port 8000 --reload